package com.service.mybatis.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.service.mybatis.pojo.BasicEntity;
import com.service.mybatis.pojo.FlagEntity;
import com.service.mybatis.pojo.IdEntity;
import com.service.mybatis.pojo.SuperEntity;

import java.util.Map;

/**
 * service接口父类
 *
 * @author ccf
 * @Date 2022/3/14 21:05
 */
public interface ISuperService<T> extends IService<T> {

    /**
     * 公共id字段
     *  写这里方便服务层调用
     */
    String ID = IdEntity.ID_FIELD;

    /**
     * 公共名称字段
     *  写这里方便服务层调用
     */
    String NAME = "name";

    /**
     * 公共状态字段
     */
    String STATUS = "status";

    /**
     * 公共类型字段
     */
    String TYPE = "type";

    /**
     * 公共创建者字段
     */
    String CREATOR = BasicEntity.CREATOR_FIELD;

    /**
     * 公共创建时间字段
     */
    String CREATE_TIME = SuperEntity.CREATE_TIME_FIELD;

    /**
     * 公共修改时间字段
     */
    String UPDATE_TIME = SuperEntity.UPDATE_TIME_FIELD;

    /**
     * 公共删除标记字段
     */
    String DEL_FLAG = FlagEntity.DEL_FLAG_FIELD;

    /**
     * 当前名称是否已经存在
     * @param id 原id
     * @param name 当前名称
     * @return
     */
    boolean isExistName(String id, String name);

    /**
     * 当前属性值是否已经存在
     * @param id 原id
     * @param fieldValue 属性值
     * @param fieldName 属性名称
     * @return
     */
    boolean isExistField(String id, String fieldValue, String fieldName);

    /**
     * 当前属性值是否已经存在 带del_flag
     * @param id 原id
     * @param map 判断属性
     * @return
     */
    boolean isExistByMap(String id, String fieldValue, String fieldName, Map<String, Object> map);
}
